package 算法.查找算法;

public class 二分查找 {
    public static void main(String[] args) {
        //需求：定义一个方法利用二分查找，查询某个元素在数组中的索引
        //数据如下：{7, 23, 79, 81, 103, 127, 131, 147}
        int[] arr={7, 23, 79, 81, 103, 127, 131, 147,157,167,188,199,200,201,249};
        //查找索引
        System.out.println(twoFind(arr, 147));
    }
    private static int twoFind(int[] arr, int num) {
        //获取索引的最大值,最小值
        int max=arr.length-1,min=0;
        while (true) {
            //判断是否索引是否越界
            if (min>max){return -1;}
            //获取中间位置的索引
            int mid=(max+min)/2;
            //中间位置元素大于查找的元素-->在左边max=mid-1
            if (arr[mid]>num){
                max=mid-1;
            //中间位置元素小于查找的元素在右边-->min=mid+1
            }else if (arr[mid]<num) {
                min=mid+1;
            //相等
            }else {return mid;}
        }
    }
}
